# Copyright (C) 2009 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

ASCIIDOC       ?= asciidoc
ASCIIDOC_EXTRA ?=
SVN            ?= svn
PUB_ROOT       ?= https://gerrit-documentation.googlecode.com/svn/Documentation

all: html

clean:
	rm -f *.html
	rm -rf $(LOCAL_ROOT)

ifeq ($(origin VERSION), undefined)
  VERSION := $(shell ./GEN-DOC-VERSION 2>/dev/null)
endif

DOC_HTML      := $(patsubst %.txt,%.html,$(wildcard *.txt))
LOCAL_ROOT    := .published
COMMIT        := $(shell git describe HEAD | sed s/^v//)
PUB_DIR       := $(PUB_ROOT)/$(VERSION)
PRIOR          = PRIOR

ifeq ($(VERSION),)
  REVISION = $(COMMIT)
else
  ifeq ($(VERSION),$(COMMIT))
    REVISION := $(VERSION)
  else
    REVISION := $(VERSION) (from v$(COMMIT))
  endif
endif

html: $(DOC_HTML)

update: html
ifeq ($(VERSION),)
	./GEN-DOC-VERSION
endif
	@-rm -rf $(LOCAL_ROOT)
	@echo "Checking out current $(VERSION)"
	@if ! $(SVN) checkout $(PUB_DIR) $(LOCAL_ROOT) 2>/dev/null ; then \
		echo "Copying $(PRIOR) to $(VERSION) ..." && \
		$(SVN) cp -m "Create $(VERSION) documentation" $(PUB_ROOT)/$(PRIOR) $(PUB_DIR) && \
		$(SVN) checkout $(PUB_DIR) $(LOCAL_ROOT) ; \
	fi
	@rm -f $(LOCAL_ROOT)/*.html
	@cp *.html $(LOCAL_ROOT)
	@cd $(LOCAL_ROOT) && \
	  r=`$(SVN) status | perl -ne 'print if s/^!  *//' ` && \
	  if [ -n "$$r" ]; then $(SVN) rm $$r; fi && \
	  a=`$(SVN) status | perl -ne 'print if s/^\?  *//' ` && \
	  if [ -n "$$a" ]; then \
	    $(SVN) add $$a && \
	    $(SVN) propset svn:mime-type text/html $$a ; \
	    fi && \
	  echo "Committing $(VERSION) at v$(COMMIT)" && \
	  $(SVN) commit -m "Updated $(VERSION) documentation to v$(COMMIT)"
	@-rm -rf $(LOCAL_ROOT)

$(DOC_HTML): %.html : %.txt
	@echo "FORMAT $@"
	@rm -f $@+ $@
	@$(ASCIIDOC) -a toc \
		-a 'revision=$(REVISION)' \
		-b xhtml11 \
		-f asciidoc.conf \
		$(ASCIIDOC_EXTRA) \
		-o $@+ $<
	@mv $@+ $@
